package com.cheng.jvm;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @author yangcheng
 * @version 1.0
 * @date 2021-06-26 22:01
 * @description 定义一个 Classloader，加载一个 Hello.xlass 文件，执行 hello 方法，此文件内容是一个 Hello.class
 * 文件所有字节（x=255-x）处理后的文件。文件群里提供。
 */
public class ClassLoaderTest {

    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {

        String name = "E:\\code\\work\\风起云动\\Advanced\\temp";
        MyClassLoader myClassLoader = new MyClassLoader(name);
        //类的全称
        String packageName = "Hello";
        //加载类
        Class<?> helloClass = myClassLoader.loadClass(packageName);

        System.out.println("使用的类加载器是" + helloClass.getClassLoader());
        //利用反射获取方法
        //Class下的newInstance()的使用有局限，因为它生成对象只能调用无参的构造函数
        Object object = helloClass.newInstance();
    }
}
